/**
*以3d方式显示的一个列表,能被拖动
*注意mouseEvent.localX是会变的?,写程序测试
*/
package kgame5.kgui.kcomp3d {

public class SmartList3D{
//	//图标的行数和列数
//	static const 
//		CC:int=10,
//		RC:int=10;
//	static const
//		CELLSIZE:Number=400;
//	//____________________Property_____________________
//	
//	//--数据模型
//	private var aMD : Array = null;//注意！！因为是Array,所以能容纳各种类型,要求着里面的东西是个group3D,因为group3D是sprite,能支持鼠标事件
//	
//	//--视图模块
//	private var 
//		world:World3D,
//		camera:CameraBee;
//	
//	//--
//	private var sb:SmartSliderBar;
//	
//	private var 
//		mapW:Number=300,
//		mapH:Number=200;
//	
//	private var mc:Sprite;
//	
//	//--这个是为了鼠标滚进mc_g就显示哪一个的md_g居中
//	//private var dict:Dictionary;
//	//____________________Method_____________________
//	public function SmartList3D (EW:Number,EH:Number){
//		mc=new Sprite();
//		GP.fillRect(mc.graphics, 0x000000, 0, 0, EW, EH);
//		//
//		aMD= new Array ();
//		
//		world=new World3D();
//		world.setViewport(0, 0, EW, EH);
//		mc.addChild(world.getDO());
//		
//		
//		camera=world.getCameraBee();
//		camera.setPosiMode(CameraBee.POSIMODE_CMT_FREE, 900, 180, 900);
//		camera.setFocusMode(CameraBee.FOCUSMODE_SPRING, 0, 0, 0);
//		
//		world.addChild(Factory3D.CreateModel_Axis());
//		
//		onLoad();//注册拖动事件
//		
//		//--
//		// dict=new Dictionary(true);
//	}
//	
//	public function update(){
//		world.Render();
//	}
//	//---删除所有的elem,这个用来初始化
//	public function clear (){
//		for(var i:int=0;i<aMD.length;i++){
//			world.removeChild(aMD[i]);
//		}
//		
//		aMD=new Array();
//		
//		//dict=new Dictionary();
//	}
//	
//	//
//	public function getDO():DisplayObject{
//		return mc;
//	}
//	
//	//
//	public function size () : int{
//		return aMD.length;
//	}
//	
//	//注意在addItem之前要设置好Item的Height和width
//	public function addMD (md:Model3D){
//		world.addChild(md);
//		aMD.push(md);
//		
//		//自动设置位置
//		var idx:int=aMD.length;
//		
//		var x:Number=PosiM.calcX(idx%CC, CELLSIZE);
//		var y:Number=0;
//		var z:Number=PosiM.calcZ(idx/CC, CELLSIZE);
//		
//		md.v3d_p.fill(x, y, z);
//		
//		//如果是group3D,则注册鼠标滚进的事件
//		//onLoadMD(md as Group3D);
//	}
//
//	//这个暂时不实现
//	public function removeMD (md:Model3D){
//		world.removeChild(md);
//		for(var i:int=0;i<aMD.length;i++){
//			if(aMD[i]==md){
//				aMD.splice(i,1);
//				break;
//			}
//		}
//	}
//	
//	//p_aimY是指的地图视窗的中心,这个是命令eyeshot移动到让焦点位置居中
//	private var focusAimY:Number=0;//这个保存为的是
//	public function setFocus(aimX:Number,aimY:Number,aimZ:Number){
//		camera.setFocusMode(CameraBee.FOCUSMODE_SPRING, aimX, aimY, aimZ);
//	}
//	public function setFocusMD(md:Model3D){
//		camera.setFocusMode(CameraBee.FOCUSMODE_SPRING, md.v3d_p.x, md.v3d_p.y, md.v3d_p.z);
//	}
//	
//	//////////////////鼠标能拖动屏幕的模块//////////////////
//	private var 
//		XFACTOR:Number=1,//一个屏幕象素则3d时间是10个位置单位
//		YFACTOR:Number=1;//一个屏幕象素则3d时间是10个位置单位
//	private var 
//		preMouseX:Number,
//		preMouseY:Number;
//	
//	//这个是用来判断鼠标按下的时候鼠标再滚进一个mc的话，则要居中显示
//	private var isMouseDown:Boolean=false;
//	
//	private function onLoad(){
//		
//		mc.addEventListener(MouseEvent.MOUSE_DOWN, mdh);
//		mc.addEventListener(MouseEvent.MOUSE_UP, muh);
//		mc.addEventListener(MouseEvent.ROLL_OUT, muh);//鼠标滚出区域也要认为是鼠标抬起了
//	}
//	private function mdh(e:MouseEvent){
//		T.p("鼠标按下了");
//		isMouseDown=true;
//		
//		preMouseX=e.stageX;
//		preMouseY=e.stageY;
//		
//		mc.addEventListener(MouseEvent.MOUSE_MOVE, mmh);
//	}
//	private function muh(e:MouseEvent){
//		T.p("鼠标抬起了");
//		isMouseDown=false;
//		mc.removeEventListener(MouseEvent.MOUSE_MOVE, mmh);
//		
//	}
//	private function mmh(e:MouseEvent){
//		T.p("鼠标动了");
//		var ofsX:Number=e.stageX-preMouseX;
//		var ofsY:Number=e.stageY-preMouseY;
//		T.p(ofsX,ofsY);
//		
//		var x:Number= camera.v3d_aim.x-ofsX*XFACTOR;
//		var z:Number= camera.v3d_aim.z+ofsY*YFACTOR;
//		
//		camera.setFocusMode(CameraBee.FOCUSMODE_FIXED,x, 0, z);
//		preMouseX=e.stageX;
//		preMouseY=e.stageY;
//	}
//	
//	/*
//	//设置鼠标滚进则居中显示的事件，如果是拖拽则不处理
//	private function onLoadMD(md_g:Group3D){
//		var mc_g:Sprite=Sprite(md_g.getDO());
//		mc_g.addEventListener(MouseEvent.ROLL_OVER, md_mroverh);
//		//mc_g.addEventListener(MouseEvent.ROLL_OUT, md_mrouth);
//		dict[mc_g]=md_g;//这个为了方便的鼠标滑进一个东西然后就让这个居中显示
//	}
//	private function md_mroverh(e:MouseEvent){
//		if(camera.isFocusReachAim()&&isMouseDown==false){//摄象机焦点运动过程中不会响应鼠标滚进事件，切如果鼠标按下也不会
//			var mc_g:Sprite=Sprite(e.currentTarget);
//			var md:Model=dict[mc_g];
//			setFocusMD(md);
//		}
//	}
//	//*/
} //end of class
}